草庐IT

c++ - 纯虚拟 friend 类

全部标签

c++ - 如何在 C++ 中将 x64 机器代码写入虚拟内存并在 Windows 中执行

我一直想知道V8JavaScript引擎和任何其他JIT编译器如何执行生成的代码。以下是我在尝试编写小型演示时阅读的文章。http://eli.thegreenplace.net/2013/11/05/how-to-jit-an-introductionhttp://nullprogram.com/blog/2015/03/19/我对汇编知之甚少,所以我最初使用http://gcc.godbolt.org/编写了一个函数并获得反汇编输出,但代码在Windows上无法运行。然后我写了一小段C++代码,用-g-Og编译,然后用gdb得到反汇编的输出。#includeintsquare(in

c++ - C/C++ 声音操作系统 API

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我有一个关于声音的问题。我以前在我的项目中使用过像OpenAL这样的声音库。我需要的是了解这些库使用的底层操作系统API。即使每个库都提供了一种简单的方法来操作输入文件根据格式,非常基本的“原始字节到字节,发送给驱动程序”函数必须存在。我的意思是,肯定有一个默认的api(一个用于Windows,另一个用于Linux)这些图书馆使用。我不认为他们直接使用每个声音卡的驱动程序,因此操作系统必须以某种方式发挥魔

c - 修改windows中套接字缓冲区大小的默认值

在socket编程中,当RAM大于19MB时,SO_SNDBUF和SO_RCVBUF的默认值为8192字节。现在,我想更改套接字的套接字缓冲区大小。我知道一种方法是使用setsockopt。但是,我想对系统默认值应用更改,并能够为我在系统中创建的所有套接字使用套接字缓冲区的修改值。请告诉我在windows平台上在哪里进行配置更改? 最佳答案 这里有一个关于它如何工作的描述:http://smallvoid.com/article/winnt-winsock-buffer.html解决方案应该是:[HKEY_LOCAL_MACHINE

c - 使用 Windows 套接字的 WriteFile 返回无效参数错误

我已经为Windows套接字苦苦挣扎了两天,无法像在Linux中那样只使用写入套接字。我想编写自己的shellcode,并且正在研究如何将stdout、stdin重定向到套接字句柄(这就是我的游戏来源)。我使用Windows7x64,必要时构建7601。这是我的代码#include#include#include#includeintmain(intargc,char**argv){//boringcodestartsif(argc");}WSADATAwsadata;intresult=WSAStartup(MAKEWORD(2,2),&wsadata);if(result!=NO_

c - 在使用 Windows 7/8.1 和 Windows 10 的 FormatMessage 中的 LocalFree/HeapFree 之前,我是否应该查询操作系统?

来自MSDN(格式消息函数):Windows10:LocalFreeisnotinthemodernSDK,soitcannotbeusedtofreetheresultbuffer.Instead,useHeapFree(GetProcessHeap(),allocatedMessage).Inthiscase,thisisthesameascallingLocalFreeonmemory.我不知道如何使用HeapFree,但我想在Windows7、Windows8/8.1和Windows10中运行该应用程序,但我目前只使用LocalFree,它正在运行。这是我的代码:VOIDSho

c++ - 如何在 Windows 上将 BYTE 数组映射为 FILE *

我发现了旧的、巨大的开源代码,它对存储在磁盘文件中的二进制数据执行一些计算,输出也保存为二进制文件。我想使用一种根方法,简化签名:intmagic(FILE*input,FILE*output);问题是我将输入数据存储在进程内存中,我希望输出也作为进程内存。代码太大,我无法在合理的时间内重写它。这个API迫使我在每次调用magic()时进行两次巨大的I/O。是否有可能在Windows上使用C/C++机制将BYTE数组映射为FILE*? 最佳答案 看来你需要fmemopen的功能:http://man7.org/linux/man-p

c - 是否有来自低级库(如 kernel32.dll 或 ntdll.dll)的 wsprintf() 类型函数?

我正在编写一个低级记录器函数,它将文本字符串附加到文本(日志)文件的末尾。要求是此函数不应调用来自DLL的任何WinAPI,这些DLL可能尚不可用于该进程——例如当它从DllMain调用时处理程序。换句话说,它不能使用除了保证加载到任何用户模式进程中的库之外的任何库,即kernel32.dll或ntdll.dll.我可以通过CreateFile、WriteFile、CloseHandle、HeapAlloc、HeapFree等均来自kernel32.dll。问题在于格式化输出字符串。例如,我需要添加一些额外的(自动生成的)详细信息,例如当前时间、进程ID、sessionID等。我通常会

c++ - Windows 套接字接收标志

我正在阅读来自msdn的套接字recv()文档,我不清楚这些标志的作用:intrecv(_In_SOCKETs,_Out_char*buf,_In_intlen,_In_intflags//these);我偷看了winsock2.h并找到一些标志的值,如:MSG_OOB和MSG_PEEK,但MSG_WAITALL未在此处定义。能否请您向我解释一下每个标志的作用以及它的值(int)是什么?编辑:看来我的问题并不清楚,但我确实阅读了关于标志的文档部分,但我仍然不理解每个标志的recv()行为,因此如果可能的话,我要求用一个例子来解释每个标志。 最佳答案

python - 在 Windows 上激活 Python 虚拟环境

这个问题在这里已经有了答案:Pythonvirtualenvquestions(6个答案)关闭4年前。注意:人们将此标记为与另一个问题重复,但事实并非如此。我的virtualenv有问题,我无法解决它。这可能与VisualStudio的设置方式有关。我一直在关注这个优秀的tutorialonflask我尝试在Windows上激活虚拟环境时遇到问题。你如何执行$venv\Scripts\activate?这应该来自命令提示符还是Powershell?我使用VisualStudio作为我的IDE。它为您创建了一个VS解决方案,该解决方案具有一个基本的flask应用程序。在创建应用程序的过程

c - execvp 的阻塞版本 (windows)

这题与Non-blockingversionofsystem()正好相反我想用另一个进程替换当前进程(而不是创建另一个进程)。我想启动(例如)notepad,但是以阻塞方式(我不想在notepad关闭之前得到提示。在Windowsshell中我只是这样做cmd/cnotepad(notepad如果没有cmd/c前缀,则自动从提示中分离)在C中,使用system我只是这样做system("notepad");但这是在幕后fork。我想用记事本替换当前进程,并且我希望它是阻塞的。我试过:#include#includeintmain(intargc,char**argv){char*con